home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2007 December / PCWKCD1207B.iso / Blogowanie poza sfera / Flock 0.9.1.3 stable / flock-0.9.1.3.en-US.win32.exe / flock / chrome / browser.jar / content / browser / bookmarks / addBookmark2.js < prev    next >
Text File  |  2007-08-03  |  13KB  |  349 lines

  1. //@line 40 "/cygdrive/K/tinderbuild/src/flock/mozilla/browser/components/bookmarks/content/addBookmark2.js"
  2.  
  3. /**
  4.  * Add Bookmark Dialog. 
  5.  * ====================
  6.  * 
  7.  * This is a generic bookmark dialog that allows for bookmark addition
  8.  * and folder selection. It can be opened with various parameters that 
  9.  * result in appearance/purpose differences and initial state. 
  10.  * 
  11.  * Use: Open with 'openDialog', with the flags 
  12.  *        'centerscreen,chrome,dialog=no,resizable=yes'
  13.  * 
  14.  * Parameters: 
  15.  *   Apart from the standard openDialog parameters, this dialog can 
  16.  *   be passed additional information, which is contained in the 
  17.  *   wArg object:
  18.  *  
  19.  *   wArg.name              : Bookmark Name. The value to be prefilled
  20.  *                            into the "Name: " field (if visible).
  21.  *   wArg.description       : Bookmark description. The value to be added
  22.  *                          : to the boomarks description field.
  23.  *   wArg.url               : Bookmark URL: The location of the bookmark.
  24.  *                            The value to be filled in the "Location: "
  25.  *                            field (if visible).
  26.  *   wArg.folderURI         : Bookmark Folder. The RDF Resource URI of the
  27.  *                            folder that this bookmark should be created in.
  28.  *   wArg.charset           : Bookmark Charset. The charset that should be
  29.  *                            used when adding a bookmark to the specified
  30.  *                            URL. (Usually the charset of the current 
  31.  *                            document when launching this window).
  32.  *   wArg.bBookmarkAllTabs  : True if "Bookmark All Tabs" option is chosen,
  33.  *                            false otherwise.
  34.  *   wArg.objGroup[]        : If adding a group of tabs, this is an array
  35.  *                            of wArg objects with name, URL and charset
  36.  *                            properties, one for each group member.
  37.  *   wArg.bWebPanel         : If the bookmark should become a web panel.
  38.  *   wArg.keyword           : A suggested keyword for the bookmark. If this
  39.  *                            argument is supplied, the keyword row is made
  40.  *                            visible.
  41.  *   wArg.bNeedKeyword      : Whether or not a keyword is required to add
  42.  *                            the bookmark.
  43.  *   wArg.postData          : PostData to be saved with this bookmark, 
  44.  *                            in the format a string of name=value pairs
  45.  *                            separated by CRLFs.
  46.  *   wArg.feedURL           : feed URL for Livemarks (turns bookmark
  47.  *                            into Livemark)
  48.  */
  49.  
  50.  
  51. var gName;
  52. var gKeyword;
  53. var gKeywordRow;
  54. var gKeywordRequired;
  55. var gSuggestedKeyword;
  56. var gRequiredFields = [];
  57. var gPostData;
  58. var gArg = window.arguments[0];
  59. var gResource;
  60. var gDescription;
  61. var gTags;
  62. var gFavorites = [];
  63. var gType;
  64. var gPerson; // TODO make array  later for multiple potential friends
  65.  
  66. //@line 106 "/cygdrive/K/tinderbuild/src/flock/mozilla/browser/components/bookmarks/content/addBookmark2.js"
  67.  
  68.  
  69. function Startup()
  70. {
  71.   initServices();
  72.   initBMService();
  73.  
  74.   var pref_service = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
  75.   var prefsService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
  76.   $("showDialog").checked = prefsService.getBoolPref("flock.favorites.starShowProperties");
  77.   // document.getElementById("flock_share_enable").value = "Log into a supported Favorites sharing service," +
  78.   //          "and option for sharing your Favorites online and sharing them with others will appear here";
  79.   gName = document.getElementById("name");
  80.   gKeywordRow = document.getElementById("keywordRow");
  81.   gKeyword = document.getElementById("keyword");
  82.   gExpander = document.getElementById("expander");
  83.   gBookmarksTree = document.getElementById("folder-tree");
  84.   gDescription = document.getElementById("description");
  85.   gDescription.value = gArg.description;
  86.   gTags = document.getElementById("tags");
  87.   gTags.value = gArg.tags;
  88.   gName.value = gArg.name;
  89.   gName.focus();
  90.   gFavorites = gArg.favorites;
  91.   gType = gArg.type;
  92.   gSuggestedKeyword = gArg.keyword;
  93.   gKeywordRequired = gArg.bNeedKeyword;
  94.   
  95.   if(!loadShareArea($('bmServices-box'), gArg.url, true))
  96.   {
  97.     loadDoEverytime();
  98.   }
  99.   if (!gSuggestedKeyword && !gKeywordRequired) {
  100.     gKeywordRow.hidden = true;
  101.   } else {
  102.     if (gSuggestedKeyword)
  103.       gKeyword.value = gSuggestedKeyword;
  104.     if (gKeywordRequired)
  105.     {
  106.       gRequiredFields.push(gKeyword);
  107.       $("descriptionRow").setAttribute('hidden', 'true');
  108.       $("tagsRow").setAttribute('hidden', 'true');
  109.       $('shareArea').setAttribute('hidden', 'true');
  110.       $('createlocalcheck').setAttribute('checked', 'true');
  111.        $('createlocalcheck').setAttribute('disabled', 'true');
  112.       $("AdvancedFeatures").setAttribute("hidden", true);
  113.     }
  114.   }
  115.  
  116.   if ("feedURL" in gArg) {
  117.     var strings = document.getElementById("bookmarksBundle");
  118.     document.title = strings.getString("addLiveBookmarkTitle");
  119.     $('shareArea').setAttribute('hidden', 'true');
  120.     $('tagsRow').setAttribute('hidden', 'true');
  121.     $("createlocalcheck").setAttribute("disabled", true);
  122.     $("AdvancedFeatures").setAttribute("hidden", true);
  123.   }
  124.  
  125.   sizeToContent();
  126.   onFieldInput();
  127.   initTitle();
  128.   // loadValues();
  129.   gExpander.setAttribute("tooltiptext", gExpander.getAttribute("tooltiptextdown"));
  130.   gPostData = gArg.postData;
  131.   
  132. //@line 172 "/cygdrive/K/tinderbuild/src/flock/mozilla/browser/components/bookmarks/content/addBookmark2.js"
  133.   WSucks = parseInt(gBookmarksTree.getAttribute("height"));
  134.   if (!WSucks)
  135.     WSucks = 150;
  136.  
  137.   // fix no more persisted class attribute in old profiles
  138.   var localStore = RDF.GetDataSource("rdf:local-store");
  139.   var rAttribute = RDF.GetResource("class");
  140.   var rElement   = RDF.GetResource("chrome://browser/content/bookmarks/addBookmark2.xul#expander");
  141.   var rDialog    = RDF.GetResource("chrome://browser/content/bookmarks/addBookmark2.xul");
  142.   var rPersist   = RDF.GetResource(gNC_NS+"persist");
  143.   
  144.   var rOldValue = localStore.GetTarget(rElement, rAttribute, true);
  145.   if (rOldValue) {
  146.     localStore.Unassert(rElement, rAttribute, rOldValue, true);
  147.     localStore.Unassert(rDialog, rPersist, rElement, true);
  148.     gExpander.setAttribute("class", "down");
  149.   }
  150.  
  151.   // Select the specified folder after the window is made visible
  152.  
  153.   setTimeout(initMenulist, 0);
  154.  
  155.   // Update the "show this dialog" checkbox
  156.   var prefsService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
  157.   var starShowProperties = prefsService.getBoolPref("flock.favorites.starShowProperties");
  158.   $("showDialog").checked = starShowProperties;
  159.   
  160.   
  161.   // Reset the |id| attribute on the toolbar folder attribute to the URI of the
  162.   // Bookmarks toolbar folder. 
  163.  
  164.  
  165.  /* if (MicrosummaryPicker.enabled)
  166.     MicrosummaryPicker.init();
  167.     */
  168.  
  169. function onToggleShowDialog()
  170. {
  171.   var prefsService = Components.classes["@mozilla.org/preferences-service;1"].getService(Components.interfaces.nsIPrefBranch);
  172.   prefsService.setBoolPref("flock.favorites.starShowProperties", $("showDialog").checked);
  173. }
  174.  
  175. function initTitle()
  176. {
  177.   if(gArg.bBookmarkAllTabs)
  178.     document.title = document.getElementById("bookmarksBundle").getString("bookmarkAllTabsTitle");
  179.   else
  180.     document.title = document.getElementById("bookmarksBundle").getString("bookmarkCurTabTitle");
  181. }
  182.  
  183. function onFieldInput()
  184. {
  185.   var ok = document.documentElement.getButton("accept");
  186.   ok.disabled = false;
  187.   for (var i = 0; i < gRequiredFields.length; ++i) {
  188.     if (gRequiredFields[i].value == "") {
  189.       ok.disabled = true;
  190.       return;
  191.     }
  192.   }
  193. }
  194.  
  195.  
  196. function onOK()
  197. {
  198.   RDFC.Init(BMDS, gSelectedFolder);
  199.   
  200.   var url;
  201.   var livemarkFeed = gArg.feedURL;
  202.   if (gArg.bBookmarkAllTabs) {
  203.     const groups = gArg.objGroup;
  204.     // Local favorites
  205.     if ($('createlocalcheck').checked) {
  206.       gResource = BMDS.createFolderInContainer(gName.value, gSelectedFolder, -1);
  207.       var tags = (gTags) ? gTags.getValue() : '';
  208.       for (var i = 0; i < groups.length; ++i) {
  209.         url = getNormalizedURL(groups[i].url);
  210.         if ($("description").value != 'undefined' &&
  211.             $("description").value != '')
  212.         {
  213.           groups[i].description = $("description").value;
  214.         } 
  215.         BMDS.addBookmarkToFolder(gResource.Value, groups[i].name, url,
  216.                                  gKeyword.value, groups[i].description,
  217.                                  groups[i].charset, gPostData, tags);
  218.       }
  219.     }
  220.     // Online favorites
  221.     var bookmarks = groups.map(function(x){
  222.       var bookmark = new Bookmark();
  223.       bookmark.URL = x.url;
  224.       bookmark.name = x.name;
  225.       bookmark.tags = $("tags").value;
  226.       bookmark.description = x.description;
  227.       return bookmark;
  228.     });
  229.     bgPublishAll(bookmarks, $('bmServices-box'), gArg.listener);
  230.   } else if (livemarkFeed != null) {
  231.     url = getNormalizedURL(gArg.url);
  232.     gResource = BMDS.createLivemarkInContainer(gName.value, url, livemarkFeed, 
  233.                                                gArg.description,
  234.                                                gSelectedFolder, -1);
  235.   } else {
  236.     url = getNormalizedURL(gArg.url);
  237.  
  238.     var name = gName.value;
  239.     var tags = (gTags)?gTags.getValue():''; 
  240.  
  241.     // If the microsummary picker is enabled, the value of the name field
  242.     // won't necessarily contain the user-entered name for the bookmark.
  243.     // But the first item in the microsummary drop-down menu will always
  244.     // contain the user-entered name, so get the name from there instead.
  245. /*    if (MicrosummaryPicker.enabled) {
  246.       var menuPopup = document.getElementById("microsummaryMenuPopup");
  247.       name = menuPopup.childNodes[0].getAttribute("label");
  248.     }
  249.     // saveOverlayData(BMDS, gResource);
  250.   */
  251.     if ($('createlocalcheck').checked) {
  252.       gResource = BMDS.createBookmarkWithTags(name, url, gKeyword.value, 
  253.                                         gDescription.value, gArg.charset, 
  254.                                         gPostData,tags);
  255.       var selection = BookmarksUtils.getSelectionFromResource(gResource);
  256.       var target    = BookmarksUtils.getTargetFromFolder(gSelectedFolder);
  257.  
  258.       BookmarksUtils.insertAndCheckSelection("newbookmark", selection, target);
  259. /*
  260.       if (MicrosummaryPicker.enabled) {
  261.         MicrosummaryPicker.commit();
  262.         MicrosummaryPicker.destroy();
  263.       }
  264. */
  265.       if (gArg.bWebPanel && gResource) {
  266.         // Assert that we're a web panel.
  267.         BMDS.Assert(gResource, RDF.GetResource(gNC_NS+"WebPanel"),
  268.                     RDF.GetLiteral("true"), true);
  269.       }
  270.     }
  271.  
  272.     // Publish to online service (if needed)
  273.     var bookmark = new Bookmark();
  274.     bookmark.URL = getNormalizedURL(gUrl);
  275.     bookmark.name = $("name").value;
  276.     bookmark.tags = $("tags").value;
  277.     bookmark.description = $("description").value;
  278.     
  279.     bgPublishAll([bookmark], $('bmServices-box'), gArg.listener);
  280.   }
  281.  
  282.    setDoEverytime();
  283.   
  284.   // return list of all online bm services that the url
  285.   // was published to
  286.   gArg.publishList = [];
  287.   var servicesBox = $('bmServices-box');
  288.   var children = servicesBox.childNodes;
  289.   for (var i = 0; i < children.length; i++) 
  290.   {
  291.     var accountItem = children.item(i).firstChild;
  292.     if (accountItem.checked) {
  293.       gArg.publishList.push(accountItem.serviceId + "--" + accountItem.accountId);
  294.     }
  295.   }
  296.   
  297.   // in insertSelection, the ds flush is delayed. It will never be performed,
  298.   // since this dialog is destroyed before.
  299.   // We have to flush manually
  300.   var remoteDS = BMDS.QueryInterface(Components.interfaces.nsIRDFRemoteDataSource);
  301.   remoteDS.Flush();
  302.  
  303.   var obs = Components.classes["@mozilla.org/observer-service;1"]
  304.                       .getService(Components.interfaces.nsIObserverService);
  305.   obs.notifyObservers(window, 'favorites', 'favorites:update');
  306. }
  307.  
  308. function onCancel()
  309. {
  310.   // Destroy the microsummary picker controller to prevent memory leaks,
  311.   // catching exceptions so we don't prevent the dialog from closing.
  312.   try {
  313.     if (MicrosummaryPicker.enabled)
  314.       MicrosummaryPicker.destroy();
  315.   }
  316.   catch(e) {
  317.     Components.utils.reportError(e);
  318.   }
  319.  
  320.   return true;
  321. }
  322.  
  323. function getNormalizedURL(url)
  324. {
  325.   // Check to see if the item is a local directory path, and if so, convert
  326.   // to a file URL so that aggregation with rdf:files works
  327.   try {
  328.     const kLF = Components.classes["@mozilla.org/file/local;1"]
  329.                           .createInstance(Components.interfaces.nsILocalFile);
  330.     kLF.initWithPath(url);
  331.     if (kLF.exists()) {
  332.       var ioService = Components.classes["@mozilla.org/network/io-service;1"]
  333.                                 .getService(Components.interfaces.nsIIOService);
  334.       var fileHandler = ioService.getProtocolHandler("file")
  335.                                  .QueryInterface(Components.interfaces.nsIFileProtocolHandler);
  336.  
  337.       url = fileHandler.getURLSpecFromFile(kLF);
  338.     }
  339.   }
  340.   catch (e) {
  341.   }
  342.  
  343.   return url;
  344. }
  345.  
  346.  
  347.  
  348.